[Appendix F] F.2 TCP Segment Header
Author: Craig Hunt
Date: 1999-02-04T01:46:34Z

#

| Appendix F Selected TCP/IP Headers |

## F.2 TCP Segment Header

This description is taken from pages 15 to 17 of RFC 793, Transmission Control Protocol, by Jon Postel, Information Sciences Institute, University of Southern California.

>     TCP Header Format

>         0                   1                   2                   3
>         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
>        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>        |          Source Port          |       Destination Port        |
>        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>        |                        Sequence Number                        |
>        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>        |                    Acknowledgment Number                      |
>        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>        |  Data |           |U|A|P|R|S|F|                               |
>        | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
>        |       |           |G|K|H|T|N|N|                               |
>        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>        |           Checksum            |         Urgent Pointer        |
>        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>        |                    Options                    |    Padding    |
>        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>        |                             data                              |
>        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

>       Source Port:  16 bits

>         The source port number.

>       Destination Port:  16 bits

>         The destination port number.

>       Sequence Number:  32 bits

>         The sequence number of the first data octet (byte) in this segment
>         (except when SYN is present). If SYN is present the sequence
>         number is the initial sequence number (ISN) and the first data
>         octet is ISN+1.

>       Acknowledgment Number:  32 bits

>         If the ACK control bit is set, this field contains the value of
>         the next sequence number the sender of the segment is expecting to
>         receive.  Once a connection is established this is always sent.

>       Data Offset:  4 bits

>         The number of 32 bit words in the TCP Header.  This indicates
>         where the data begins.  The TCP header (even one including options)
>         is an integral number of 32 bits long.

>       Reserved:  6 bits

>         Reserved for future use.  Must be zero.

>       Control Bits:  6  single-bit values (from left to right):

>         URG:  Urgent Pointer field significant
>         ACK:  Acknowledgment field significant
>         PSH:  Push Function
>         RST:  Reset the connection
>         SYN:  Synchronize sequence numbers
>         FIN:  No more data from sender

>       Window:  16 bits

>         The number of data octets (bytes) the sender of this segment is
>         willing to accept.

>       Checksum:  16 bits

>         The checksum field is the 16 bit one's complement of the one's
>         complement sum of all 16 bit words in the header and text.

>       Urgent Pointer:  16 bits

>         This field contains the current value of the urgent pointer as a
>         positive offset from the sequence number in this segment.  The
>         urgent pointer points to the sequence number of the octet
>         following the urgent data.  This field is only be interpreted
>         in segments with the URG control bit set.

>       Options:  variable

>         Options may occupy space at the end of the TCP header and are a
>         multiple of 8 bits in length.

F.1 IP Datagram Header |  | F.3 ICMP Parameter Problem Message Header